<?php

	/**
	 *  Klass för att hantera med arrayer
	 */
	class ArrayHandler {
		//en funktion som vänder på ordningen på en array
		//tex. array("Kalle", "Nisse", "Olle") skall bli array("Olle", "Nisse", "Kalle");
		public function ReverseArray($array) {
			$result = array();
			$keyArray = array_keys($array);
			//Ersätt denna rad med din kod som vänder arrayen.

			for ($i = 0; $i < count($keyArray); $i++)
			{
				$result[$keyArray[count($keyArray) - (1 + $i)]] = $array[$keyArray[count($keyArray) - (1 + $i)]];
			}
			
			return $result;
		}
		
		//en funktion som returnerar sista elementet i en array
		public function ReturnLastItem($array) {
			//Ersätt denna rad med din kod som returnerar sista elementet i arrayen.
			
			return end($array); //temporär lösning returnerar 0
		}
		
	
	  //En funktion för test av funktionerna i array.php
	  public function Test() {
	  		
	  	
	  		//En testarray
			$testArray = array(1, 2, 3, 4, 5, 6, 7);
			$testStringKeyArray = array("a" => 1,"b" => 2,"c" => 3,"d" => 4,"e" => 5,"f" => 6,"g" => 7);
			$testStringIntKeyArray = array("a" => 1, 2, 3,"b" => 4, 5,"k" => 6, 7);
		
			
			//Testa ReverseArray med Int key
			$resultArray = $this->ReverseArray($testArray);
			$reversedArray = array(7, 6, 5, 4, 3, 2, 1);
			$keyArray = array_keys($resultArray);
			
			for ($i = 0; $i < 7; $i++) {
				if (isset($resultArray[$i]) == false) {
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} else if ($resultArray[$keyArray[$i]] != $reversedArray[$i]) {
					echo "<p>Resultat: ".$resultArray[$i]." Felvända: ".$reversedArray[$i]."</p>";
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}
			}
			
			//Testa ReverseArray med String key
			$resultArray = $this->ReverseArray($testStringKeyArray);
			$keyArray = array_keys($resultArray);
			
			for ($i = 0; $i < 7; $i++) {
				if (isset($resultArray[$keyArray[$i]]) == false) {
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} else if ($resultArray[$keyArray[$i]] != $reversedArray[$i]) {
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}
			}
			
			//Testa ReverseArray med String och Int Key
			$resultArray = $this->ReverseArray($testStringIntKeyArray);
			$keyArray = array_keys($resultArray);
			
			for ($i = 0; $i < 7; $i++) {
				if (isset($resultArray[$keyArray[$i]]) == false) {
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} else if ($resultArray[$keyArray[$i]] != $reversedArray[$i]) {
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}
			}
			
			//Testa ReturnLastItem
			if ($this->ReturnLastItem($testArray) != 7) {
				echo "ReturnLastItem test misslyckades: felaktigt returvärde </br>";
				return false;
			}
			
			return true;   	
	  }
  }